package com.autumn.config.api.services;

import com.autumn.common.api.application.dto.input.DefaultPrimaryKeyInput;
import com.autumn.config.api.dto.input.StatusInput;

/**
 * 配置抽象服务
 * 
 * @author 老码农
 *         <p>
 *         Description
 *         </p>
 * @date 2018-01-01 15:05:03
 * @param <TAddInput>
 * @param <TModifyInput>
 * @param <TOutput>
 */
public interface IConfigureService<TAddInput, TModifyInput, TOutput> {

	/**
	 * 添加
	 * 
	 * @param input
	 *            输入
	 * @return
	 */
	TOutput add(TAddInput input);

	/**
	 * 修改
	 * 
	 * @param input
	 *            输入
	 * @return
	 */
	TOutput modify(TModifyInput input);

	/**
	 * 删除
	 * 
	 * @param input
	 *            输入
	 * @return
	 */
	void delete(DefaultPrimaryKeyInput input);

	/**
	 * 更新状态
	 * 
	 * @param input
	 *            输入
	 * @return
	 *
	 */
	TOutput updateStatus(StatusInput input);

	/**
	 * 按主键查询
	 * 
	 * @param input
	 *            输入
	 * @return
	 */
	TOutput queryById(DefaultPrimaryKeyInput input);
}
